<?php
/**
 * @package mm_my
 * @subpackage Controller
 */

/**
 * Класс главного контроллера. Его наследуют все контроллеры my
 * @package mm_my
 * @subpackage Controller
 */
class Controller_Main extends Kashtan_Phpx_Controller
{
    /**
     * Имя класса для объекта меню
     * @var string
     */
    protected $_navigationClass = 'Navigation';

    /**
     * Объект меню
     * @var Zend_Navigation
     */
    protected $_navigation;

    /**
     * Создаёт объект меню, если он ещё не создан.
     * @return Zend_Navigation|null
     */
    protected function _getNavigation()
    {
        if($this->_navigationClass && is_null($this->_navigation)){
            $this->_navigation = new $this->_navigationClass;
        }

        return $this->_navigation;
    }

    /**
     * Помещает в вид данные о навигации
     *
     * @see Zend_Controller_Action::preDispatch()
     */
    public function preDispatch()
    {
        if($this->view instanceof Zend_View_Abstract){
            Zend_Dojo::enableView($this->view);

            $this->view->addHelperPath('Kashtan/Dojo/View/Helper', 'Kashtan_Dojo_View_Helper');
            $this->view->addHelperPath('Kashtan/View/Helper', 'Kashtan_View_Helper');

            if ($this->_getNavigation()){
                $this->view->navigation($this->_getNavigation());
            }
        }
    }

    /**
     * Переводит и добавляет сообщение типа "заметка"
     * в пространство имён notices flashMessenger-a
     *
     * @param string $message
     * @return Controller_Main
     */
    public function addNotice($message)
    {
        $options = func_get_args();
        array_shift($options);
        
        if($message){
            $this->_helper->getHelper('flashMessenger')->setNamespace('notices')
                                  ->addMessage($this->view->translate($message, $options));
        }

        return $this;
    }

    /**
     * Переводит и добавляет сообщение типа "ошибка"
     * в пространство имён errors flashMessenger-a
     *
     * @param string $message
     * @return Controller_Main
     */
    public function addError($message)
    {
        $options = func_get_args();
        array_shift($options);

        if($message){
            $this->_helper->getHelper('flashMessenger')->setNamespace('errors')
                                  ->addMessage($this->view->translate($message, $options));
        }

        return $this;
    }

    /**
     * Переводит и добавляет сообщение типа "успех"
     * в пространство имён successess flashMessenger-a
     *
     * @param string $message
     * @return Controller_Main
     */
    public function addSuccess($message)
    {
        $options = func_get_args();
        array_shift($options);

        if($message){
            $this->_helper->getHelper('flashMessenger')->setNamespace('successes')
                                  ->addMessage($this->view->translate($message, $options));
        }

        return $this;
    }
}
